// pages/user/password/password.js
import Toast from '@vant/weapp/toast/toast';
const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    currentPassword: '',
    newPassword: '',
    confirmPassword: '',
    currentPasswordError: '',
    newPasswordError: '',
    confirmPasswordError: '',
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  onCurrentPasswordChange(e) {
    this.setData({
      currentPassword: e.detail,
      currentPasswordError: e.detail ? '' : '请输入当前密码'
    });
  },

  onNewPasswordChange(e) {
    const newPassword = e.detail;
    this.setData({ newPassword });

    // 密码强度验证
    if (newPassword && newPassword.length < 6) {
      this.setData({ newPasswordError: '密码长度不能少于6个字符' });
    } else {
      this.setData({ newPasswordError: '' });
    }

    // 如果已经输入确认密码，检查两次密码是否一致
    if (this.data.confirmPassword && this.data.confirmPassword !== newPassword) {
      this.setData({ confirmPasswordError: '两次密码输入不一致' });
    } else if (this.data.confirmPassword) {
      this.setData({ confirmPasswordError: '' });
    }
  },

  onConfirmPasswordChange(e) {
    const confirmPassword = e.detail;
    this.setData({ confirmPassword });

    // 检查两次密码是否一致
    if (confirmPassword && confirmPassword !== this.data.newPassword) {
      this.setData({ confirmPasswordError: '两次密码输入不一致' });
    } else {
      this.setData({ confirmPasswordError: '' });
    }
  },

  async updatePassword() {
    // 表单验证
    if (!this.data.currentPassword) {
      this.setData({ currentPasswordError: '请输入当前密码' });
      return;
    }

    if (!this.data.newPassword) {
      this.setData({ newPasswordError: '请输入新密码' });
      return;
    }

    if (this.data.newPassword.length < 6) {
      this.setData({ newPasswordError: '密码长度不能少于6个字符' });
      return;
    }

    if (!this.data.confirmPassword) {
      this.setData({ confirmPasswordError: '请再次输入新密码' });
      return;
    }

    if (this.data.newPassword !== this.data.confirmPassword) {
      this.setData({ confirmPasswordError: '两次密码输入不一致' });
      return;
    }

    this.setData({ loading: true });

    try {
      const res = await new Promise((resolve, reject) => {
        wx.request({
          url: `${app.globalData.baseUrl}/api/users/password`,
          method: 'PUT',
          header: {
            'Authorization': `Bearer ${wx.getStorageSync('token')}`,
            'Content-Type': 'application/json'
          },
          data: {
            currentPassword: this.data.currentPassword,
            newPassword: this.data.newPassword,
            confirmPassword: this.data.confirmPassword
          },
          success: resolve,
          fail: reject
        });
      });

      this.setData({ loading: false });

      if (res.statusCode === 200 && res.data.success) {
        Toast.success('密码修改成功');

        // 显示成功提示后，延迟跳转到登录页
        setTimeout(() => {
          // 清除本地存储的登录信息
          wx.removeStorageSync('token');
          wx.removeStorageSync('userInfo');

          // 跳转到登录页
          wx.reLaunch({
            url: '/pages/login/login'
          });
        }, 1500);
      } else {
        Toast.fail(res.data.message || '密码修改失败');
      }
    } catch (error) {
      console.error('修改密码失败:', error);
      Toast.fail('网络错误，请重试');
      this.setData({ loading: false });
    }
  },

  goBack() {
    wx.navigateBack();
  }
})